/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package lu.med.praxiswahl.wahlumed.service.beans.serviceinterface;

import java.util.Calendar;
import java.util.Set;

import lu.med.praxiswahl.wahlumed.model.beans.BillsContentsTBL;
import lu.med.praxiswahl.wahlumed.model.beans.CustomerTBL;
import lu.med.praxiswahl.wahlumed.model.beans.HonorarTBL;

/**
*
* @author Patrick kendzo
* Email: pkendzo@msn.com
*/
public interface BillServiceInt {
	
    public static final int RET_OPERATION_DONE_PROPERLY = 0;
    public static final int RET_OPERATION_FAILED = 1;
    
    /* Erstellt eine Rechnung einschlie�lich Inhalt und erstelltDatum */
    public int create_PAYED_Bill(Long rechnungs_nummer, String matricule, Boolean erstellt, Boolean bezahlt, Calendar erstelltDatum);
    
    /* Erstellt eine unbezahlte Rechnung*/
    public int create_ACTUAL_Bill(Long rechnungs_nummer, String matricule, Boolean erstellt, Boolean bezalht, Calendar erstelltDatum);
    
    /* F�r nicht erstellte Rechnung */
    public int create_NICHTERSTELLTE_Bill(Long rechnungs_nummer, Boolean erstellt, Boolean bezalht, String matricule, Calendar erstelltDatum);
    
    public Long[] getNichtErstellteRechnungen();
    
    /*wird m�glicherweise nicht gebraucht wegen creatBill(siehr oben) */
    public int markBill_AS_NichtErstellt();
    
    /*Macht eine nicht erstellte Rechnung zu einer erstellten Rechnung*/
    public int markNichtErstellt_AS_Erstellt();
    
    /* Liefert alle Rechnungen zur�ck, die �lter als oder gleichalt wie date sind */
    public Long[] getBillsOlderThanOf(String matricule, Calendar date);

    /*Liefert alle Rechnungen zur�ck, die weniger als x Jahre alte sind*/
    public Long[] getBillsNewerThanOf(String matricule, Calendar date);
    
    public Long[] get_ERLEDIGTE_BillsByCustomer(String matricule);
    
    public Long[] get_ERSTELLTE_BillsByCustomer(String matricule);
    
    public Long[] get_ACTUAL_BillsByCustomer(String matricule);
    
    public CustomerTBL getPatientin();
    
    public int deleteBill(Long id);
    
    public String getRueckueberweisungDatum();
    public void setRueckueberweisungDatum(String rueckUeberweisung_datum);
    
    /* Gibt der aktuelle Primarykey indes der Datenbank zur�ck.
	 * dies erm�glich laufende Nummer f�r die Rechunungsnummer zu erstellen.
	 */    
    public Long getSubPrimaryKeyIndex();
    
    /* Aktualisiert eine Rechnung */
    public int updateBill();
    
    public int updateBillContent(BillsContentsTBL item);
    
    /* Gibt eine Rechnung zur�ck */
    public void getBill(Long rechnungs_nummer);
    
    public HonorarTBL getBillByID(Long rechnungs_nummer);
    
    public boolean isRetransfered();
    public void setRetransfered(boolean value);
    
    public String getBesonderheit();
    public void setBesonderheit(String besonderheit);
    
    public String getNoten();
    public void setNoten(String Noten);
    
	public double getAPayer();
	public void setAPayer(double payer);
    
    public String getKartenTyp();
    public void setKartenType(String karten_typ);
    
    public boolean isSchwanger();
    public void setSchwanger(boolean value);
    
    public double getAnzahlung();
    public void setAnzahlnung(double anzahlung);
    
    public boolean isBezahlt();
    public void setBezahlt(boolean value);
    
    public boolean isSent();
    public void setSended(boolean value);
    
    public boolean isInPC();
    public void setInPC(boolean value);
    
    public boolean isCreated();
    public void setCreated(boolean value);
    
    public boolean isCashPayed();
    public void setCashPayed(boolean value);
    
    public boolean kartePayed();
    public void setKartePayed(boolean value);
    
    public boolean payedBytransfer();
    public void setpayedBytransfer(boolean value);
    
    public Calendar getErstellDatum();
    public void setErstellDatum(Calendar date);
    
    public Set<BillsContentsTBL> getContentsOfBill();
    public void setContentsOfBill(Set<BillsContentsTBL> contents);
    
    
    /***************************************FOR OPERATION WITH THE BILLCONTENTSERVICE****************************************************/
    
    /**************************************** DEPRECATED *************************************/
    /*Setz der aktuelle BillContent im Speicher */
    public void getActualBillContentService(Long id);
    
    public String getDATE_DENT_HEURE_OF_ActualBillContent();
	public String getH_OF_ActualBillContent();
	public String getMED_OF_ActualBillContent();
	public String getCODE_TARIF_LIBELLE_OBJECT_OF_ActualBillContent();
	public double getMONTANT_OF_ActualBillContent();
	public String getMED_PRES_OF_ActualBillContent();
	//public long getBillNumber_OF_ActualBillContent();
	public int getNBR_OF_ActualBillContent();
	public BillsContentsTBL getBillContentByID_OF_ActualBillContent(Long id);
	public Long[] getBillsContentByBillNumber(Long billNumber);
	
	public void setDATE_DENT_HEURE_OF_ActualBillContent(String date_dent_heure);
	public void setH_OF_ActualBillContent(String h);
	public void setMED_OF_ActualBillContent(String med);
	public void setCODE_TARIF_LIBELLE_OBJECT_OF_ActualBillContent(String code_libelle);
	public void setMONTANT_OF_ActualBillContent(double montant);
	public void setMED_PRES_OF_ActualBillContent(String med_pres);
	public void setNBR(int nbr);

	public Long[] getRechnungenImPC();

	public int queryDate(String dateString, String matricule, Long billId);
    
}
